<!DOCTYPE html>
<html lang="zh-CN">

<head>
  <meta charset="UTF-8">
  <meta name="author" content="wangbo">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    // 比较运算符 >,<,>=,<=,==,!=,===(全等),!== 得到的结果是布尔值,(true|false)
    // number,boolean,string 2种不同类型的数据,比较,转化成 number
    // 字符串和字符串比较 按照字母的ASCII 来比较
    // null==undefined  和其他任何的类型无法比较


    // 都是引用，对象的比较都是引用的比较，当且仅当它们引用同一个对象时才相等：

    // 转换规则：在比较运算符时会优先转换操作数（强制转换），然后再进行比较。
    // 第一步：如果有一个操作数类型为布尔值，则在比较相等之前将其转换为数值类型，即 false => 0, true => 1;
    // 第二步：如果一个操作数是字符串，另一个是数值，在比较前先将字符串转换成数值
    // 第三步：在双等号对比时，左右类型相等的情况下，采用三等号的方式进行比较，严格的运算符判定规则

    
    let a = 10, b = 20
    console.log(a > b);
    // 通过ASCII 对应的数字,来比较的
    console.log("a" < "b");
    console.log("2" < "1");
    console.log("!" < "1");
    // 汉字也能比较,字符串,字母多的时候,1个个的字母去比较
    console.log("123" > "11111");
    // 比空格还小 true
    console.log("111110" > "11111");
    // true
    console.log(0 == "");
    console.log(false == "");
    // 判断值是否相同 number boolean
    console.log("10" == 10);
    console.log(0 == false);
    // true 会变成1
    console.log(2 > true);


    console.log("-------------");
    // 判断值,也判断类型
    console.log("10" === 10);
    console.log(0 === false);
    console.log(2 === true);

    // 判断值,也判断类型
    console.log("10" !== 10);
    console.log(0 !== false);
    console.log(2 !== true);
    // 特殊情况
    // js null 和undefined 开辟的是相同的空间 引用类型
    console.log(null == undefined);

    console.log(null == 0);
    console.log(null > 0);
    console.log(null < 0);

    console.log(null == false);
    console.log(null > false);
    console.log(null < false);

    console.log(null == "");
    console.log(null > "");
    console.log(null < "");

    console.log(undefined == 0);
    console.log(undefined > 0);
    console.log(undefined < 0);

    console.log(undefined == "");
    console.log(undefined > "");
    console.log(undefined < "");

    console.log(undefined == false);
    console.log(undefined > false);
    console.log(undefined < false);

    // 引用类型不比较 
    console.log("++++++++++++");
    console.log([] == []);
    console.log([] < []);
    console.log([] > []);
    // 特殊情况
    console.log([] != []);

  </script>
</body>

</html>